package basics

import "fmt"

// DefaultValue 查看golang基本类型默认值
func DefaultValue() {
	var intV int                            // 整型变量
	var floatV float32                      // 实型变量
	var boolV bool                          // 布尔型变量
	var stringV string                      // 字符串变量
	var pointerV *int                       // 指针变量
	var funcV func(int, int) int            // function变量
	var interfaceV interface{}              // 接口变量
	var sliceV []int                        // 切片变量
	var channelV chan int                   // channel变量
	var mapV map[string]string              // map变量
	var errorV error                        // error变量
	fmt.Println("int = ", intV)             // 0
	fmt.Println("float = ", floatV)         // 0
	fmt.Println("bool = ", boolV)           // false
	fmt.Println("string = ", stringV)       // ""
	fmt.Println("pointer = ", pointerV)     // nil
	fmt.Println("func = ", funcV == nil)    // nil
	fmt.Println("interface = ", interfaceV) // nil
	fmt.Println("slice = ", sliceV)         // []
	fmt.Println("slice = ", sliceV == nil)  // true
	fmt.Println("channel = ", channelV)     // nil
	fmt.Println("map = ", mapV)             // map[]
	fmt.Println("map = ", mapV == nil)      // true
	fmt.Println("error = ", errorV)         // nil

	var arrayV [3]int // 数组变量

	// Person 定义结构体
	type Person struct {
		name string
		age  int
	}
	var structV Person // 结构体变量

	fmt.Println("array = ", arrayV)   // [0, 0, 0]
	fmt.Println("struct = ", structV) // {"" 0}
}
